#pragma once

#include "TestActiveInterface.h"

namespace CO { namespace SpiFoundation { namespace RoomFW {

class TestActiveObject :
	public SpiFoundation::RoomFW::ActiveObject,
	public TestActiveInterface
{
public:

	//
	// Constructor/Destructor.
	//
	TestActiveObject(const char* name = "TestActiveObject");
	virtual ~TestActiveObject(void);

	//
	// ISystemComponent overrides.
	//
	virtual bool initialize(SpiFoundation::Configuration::ConfigKey& configRoot);
	virtual SpiFoundation::RoomFW::PortIndex::PrimaryIndex getSystemPort(void) const;

	//
	// IActiveObject overrides.
	//
	virtual SpiFoundation::RoomFW::ObjectId getObjectId(void) const;
	virtual const char* getObjectName(void) const;

protected:

	//
	// ActiveObject override.
	//
	virtual void handle(SpiFoundation::RoomFW::RoomMessageSP message);

private:

	//
	// TODO:  Add private attributes.
	//
	long myConfigValue_;
	std::string name_;
};
//
// TODO:  Add a smart pointer typedef for your class.
//
typedef ::boost::shared_ptr<TestActiveObject> TestActiveObjectSP;

}}} // End namespace
